import time
import unittest

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.firefox.service import Service


class MyTestCaseFireFox(unittest.TestCase):
    driver = None

    @classmethod
    def setUpClass(cls) -> None:
        # 注册 驱动打开的位置
        service = Service(executable_path="../../dirver_exe/geckodriver.exe")
        # 打开浏览器  driver 代表 浏览器对象
        cls.driver = webdriver.Firefox(service=service)

    def test_alert(self):
        """测试alert弹窗"""
        self.driver.get("http://192.168.0.152:8080/testhtml/exam/testSelenium.html")
        # 通过 Xpath   进行  元素  定位  ，将 所有的 按钮定位出来  放在一个 列表元素 中
        list = self.driver.find_elements(By.XPATH, "//input")
        # 通过列表中的 下标 来进行 取值
        list[0].click()

        # 如何 操作  弹窗中的 内容
        """
            因为 在点击 弹窗之前 ，我们的 鼠标 事件 在 网页中 ，当点击 弹窗后，鼠标依然还在网页中 没有跟随弹窗而出现
            ，我们需要将 鼠标事件 切换到 弹窗中 才能  才足以 弹窗中的 内容
        """
        alert = self.driver.switch_to.alert
        # 通过 弹窗对象 来操作 里面的 属性
        # 获取 弹窗中的 弹窗的标题名
        print(alert.text)
        # alert.accept()  # 点击 弹窗中的  确定
        alert.dismiss()  # 操作取消

    def test_Confirmation(self):
        """测试Confirmation弹窗"""
        self.driver.get("http://192.168.0.152:8080/testhtml/exam/testSelenium.html")
        # 通过 Xpath   进行  元素  定位  ，将 所有的 按钮定位出来  放在一个 列表元素 中
        list = self.driver.find_elements(By.XPATH, "//input")
        # 通过列表中的 下标 来进行 取值
        list[1].click()

        # 如何 操作  弹窗中的 内容
        """
            因为 在点击 弹窗之前 ，我们的 鼠标 事件 在 网页中 ，当点击 弹窗后，鼠标依然还在网页中 没有跟随弹窗而出现
            ，我们需要将 鼠标事件 切换到 弹窗中 才能  才足以 弹窗中的 内容
        """
        alert = self.driver.switch_to.alert
        # 通过 弹窗对象 来操作 里面的 属性
        # 获取 弹窗中的 弹窗的标题名
        print(alert.text)
        # alert.accept()  # 点击 弹窗中的  确定
        alert.dismiss()  # 操作取消

    def test_Prompt(self):
        """测试Prompt弹窗"""
        self.driver.get("http://192.168.0.152:8080/testhtml/exam/testSelenium.html")
        # 通过 Xpath   进行  元素  定位  ，将 所有的 按钮定位出来  放在一个 列表元素 中
        list = self.driver.find_elements(By.XPATH, "//input")
        # 通过列表中的 下标 来进行 取值
        list[2].click()

        # 如何 操作  弹窗中的 内容
        """
            因为 在点击 弹窗之前 ，我们的 鼠标 事件 在 网页中 ，当点击 弹窗后，鼠标依然还在网页中 没有跟随弹窗而出现
            ，我们需要将 鼠标事件 切换到 弹窗中 才能  才足以 弹窗中的 内容
        """
        alert = self.driver.switch_to.alert
        # 通过 弹窗对象 来操作 里面的 属性
        # 向弹窗中的 输入框中 写入 数据
        alert.send_keys('hanamaki')
        time.sleep(3)
        # 获取 弹窗中的 弹窗的标题名
        print(alert.text)
        # alert.accept()  # 点击 弹窗中的  确定
        alert.dismiss()  # 操作取消


if __name__ == '__main__':
    unittest.main()
